home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_shw_div3locked_door.cog < prev    next >
Text File  |  1999-11-15  |  9KB  |  326 lines

  1. # Jones 3D Cog Script
  2. #
  3. # shw_div1locked_doors.cog
  4. #
  5. # Generic Door Script
  6. #
  7. # [CMG]
  8. #
  9. # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
  10. # ========================================================================================
  11.  
  12. symbols
  13.     
  14.  
  15. #    MESSAGES
  16.     message    startup        
  17.     message    activated    
  18.  
  19. #    ACTORS
  20.     thing        indy        
  21.     thing        player        local        
  22.     
  23. #    PROPS
  24.     thing        door0        
  25.     thing        button0        
  26.     thing        button1        
  27.     
  28. #    CAMERAS
  29.     thing       but1Cam        
  30.  
  31. #    COGS
  32.     cog           doortalkcog        
  33.     
  34. #    CAMERA TARGETS
  35.     thing       camTargPos1        
  36.     thing       but1MoveTarg    local
  37.     
  38. #    VARIABLES
  39.     float        doorspeed=4.0
  40.     float        sleepTime=5.0    local
  41.     int            open=0          local
  42.     int            closing=0       local
  43.     int            keyed=0         local
  44.     int            doorspeak=0      local
  45.     int            i=0              local
  46.     int            playerpos        local
  47.     int            keygrumble=0    local
  48.  
  49. #    KEYFRAMES
  50.     keyframe        inReach=in_reach_medium.key        local
  51.         
  52. #    VECTORS
  53.     vector      but1CamTarg         local
  54.     vector      openpos             local    #doors' open position
  55.     vector      closepos             local    #doors' closed position
  56.  
  57. #    TEMPLATES
  58.     template    ghostTpl=ghost      local
  59.  
  60. #    SOUNDS
  61.     sound    placement=tem_tikikey_place_c.wav        local
  62.     sound    click=sol_panel_switch_c.wav    local
  63.  
  64.     sound    in_doorline0=INXJ089.wav        local    # that didn't work
  65.     sound    in_doorline1=INXJ090.wav        local    # I'm doing something wrond
  66.     sound    in_doorline2=INXJ091.wav        local    # of course that didn't work
  67.     sound    in_doorline3=INXJ095.wav        local    # must be another way
  68.     sound    in_doorline4=INXJ100.wav        local    # looks like door...?
  69.     
  70. #    SECTORS
  71.     sector            doorSector            local
  72.             
  73.  
  74. end
  75.  
  76. # ========================================================================================
  77.  
  78. code
  79.  
  80. startup:
  81.  
  82.     player = GetLocalPlayerThing();
  83.     in_rotRate = GetThingMaxRotVel(player);
  84.     
  85.     closepos=GetThingPos(door0);
  86.     doorSector = GetThingSector(door0);
  87.     SetSectorAdjoins(doorSector, 0);
  88.     return;
  89.  
  90. # ........................................................................................
  91. # ........................................................................................
  92.         
  93. #========================================================
  94.  
  95.  
  96. activated:
  97.  
  98. if (open == 1) return;
  99. if (IsThingMoving(door0)) return;
  100.  
  101. If (GetSenderRef() == button0) 
  102. {
  103.     If (keyed == 1)
  104.     {
  105.         open = 1;
  106.         # take control from player and deselect weapon
  107.         SetActorFlags(player, 0x200000);
  108.         DeselectWeapon(player);
  109.         Sleep(0.5);
  110.         # player hits the switch
  111.         PlayMode(player, 60, 1);
  112.         Sleep(0.25);
  113.         # player regains control
  114.         ClearActorFlags(player, 0x200000);
  115.         # play sounds, move the buttons and door
  116.         MoveToFrame(button0, 1, 1);
  117.         MoveToFrame(button1, 1, 1);
  118.         PlaySoundThing(click, door0, 1, 3, 10, 0x0);
  119.         SetSectorAdjoins(doorSector, 1);
  120.         Rotate(door0, 90, 1, doorspeed);
  121.         waitforstop(door0);
  122.         openpos=GetThingLVecPYR(door0);
  123.         sleep(sleeptime);
  124.         Rotate(door0, -90, 1, doorspeed);
  125.         closing = 1;
  126.         WaitForStop(door0);
  127.         closing = 0;
  128.         MoveToFrame(button0, 0, 10);
  129.         MoveToFrame(button1, 0, 10);
  130.         SetSectorAdjoins(doorSector, 0);
  131.         open = 0;
  132.         return;
  133.     }
  134.     else if (keyed == 0)
  135.     {
  136.     # Check if inventory is being used...
  137.     whichItem = GetCurItem(player);
  138.     
  139.     # Prep for scene...
  140.     curCam = GetCurrentCamera();
  141.     StartCutScene(1);
  142.     open = 1;
  143.     SetCameraLookInterp(2, 0);
  144.     SetCameraPosInterp(2, 0);
  145.     DeselectWeapon(player); # stow any weapon or lighter
  146.     Sleep(0.25); # wait a beat
  147.     CopyPlayerHolsters(player, indy); # make sure actor has matching props
  148.     SetThingFlags(player, 0x80000);
  149.     ClearThingFlags(indy, 0x80000);
  150.  
  151.     # Line Indy up...
  152.     CopyOrientAndPos(player, indy);
  153.     AISetLookThing(indy, button0);
  154.     AIWaitForStop(indy);
  155.  
  156.     # Slew follow camera to observe the scene from a known position
  157.     ### SetExtCamLookOffsetToThing(button0); # new look offset per Matt R...buggy
  158.     SetExtCamOffsetToThing(but1Cam);
  159.     Sleep(0.5);
  160.     
  161.     if (whichItem == 118)
  162.         {
  163.         ChangeInv(player, 118, -1);
  164.         keyed = 1;
  165.         call innerchamber;
  166.         return;
  167.         }
  168. else
  169.     {                                
  170.     if (whichItem != 0)
  171.         {
  172.         # Take care of wrong keys and items...
  173.         SendMessageEx(doortalkcog, user0, indy, 118, whichItem, 0);
  174.         }
  175.     
  176.     else if (keygrumble == 0)
  177.         {
  178.         # Note need for key 1st time thru...
  179.         SendMessageEx(doortalkcog, user4, indy, 1, 3, 0);
  180.         }
  181.             
  182.     }
  183.         
  184. while (global15 == 0)
  185.     {
  186.     Sleep(0.01); # wait for line to finish
  187.     }
  188.     Sleep(0.3);
  189.     RestoreExtCam();
  190.     SetThingMaxRotVel(indy, in_rotRate);
  191.     ClearThingFlags(player, 0x80000);
  192.     SetThingFlags(indy, 0x80000);
  193.     EndCutScene();
  194.     open = 0;
  195.     return;
  196.     
  197.     }
  198. }
  199.  
  200. If ((GetSenderRef() == button1)    && (keyed == 1))
  201.     {
  202.         open = 1;
  203.         # take control from player and deselect weapon
  204.         SetActorFlags(player, 0x200000);
  205.         DeselectWeapon(player);
  206.         Sleep(0.5);
  207.         # player hits the switch
  208.         PlayMode(player, 60, 1);
  209.         Sleep(0.25);
  210.         # player regains control
  211.         ClearActorFlags(player, 0x200000);
  212.         # play sounds, move the buttons and door
  213.         MoveToFrame(button0, 1, 1);
  214.         MoveToFrame(button1, 1, 1);
  215.         PlaySoundThing(click, door0, 1, 3, 10, 0x0);
  216.         SetSectorAdjoins(doorSector, 1);
  217.         Rotate(door0, -90, 1, doorspeed);
  218.         waitforstop(door0);
  219.         openpos=GetThingLVecPYR(door0);
  220.         sleep(sleeptime);
  221.         Rotate(door0, 90, 1, doorspeed);
  222.         closing = 1;
  223.         waitforstop(door0);
  224.         closing = 0;
  225.         PlaySoundThing(click, door0, 1, 3, 10, 0x0);
  226.         MoveToFrame(button0, 0, 10);
  227.         MoveToFrame(button1, 0, 10);
  228.         SetSectorAdjoins(doorSector, 0);
  229.         open = 0;
  230.     }
  231.  
  232.  
  233. If (GetSenderRef() == door0)
  234.     {
  235.         # General "door won't open" grmubling thereafter...
  236.         SetActorFlags(player, 0x200000);
  237.         SendMessageEx(doortalkcog, user5, indy, 1, 3, 0);
  238.         PlayMode(player, 60, 0);
  239.         Sleep(0.5);
  240.         ClearActorFlags(player, 0x200000);
  241.     }
  242. return;
  243. # ........................................................................................
  244.  
  245. blocked:
  246.     print("????");
  247.     return;
  248.  
  249. # ........................................................................................
  250. innerchamber:
  251.  
  252. {
  253.        # create target for secondary focus at player position.
  254.         but1CamTarg = VectorAdd(VectorTransformToOrient(player, '0.0 0.0 0.0'), GetThingPos(player));
  255.         but1MoveTarg = CreateThingAtPos(ghostTpl, GetThingSector(player), but1CamTarg, '0 0 0');
  256.         CaptureThing(but1MoveTarg);
  257.         
  258.         # offset camera to thing.
  259.         SetExtCamLookOffsetToThing(but1MoveTarg);
  260.  
  261.         ClearThingFlags(indy, 0x80000);
  262.         open = 1;
  263.         
  264.         # Play the animations - wait for Indy's
  265.         PlayKey(indy, inReach, 4, 0x12, 1);
  266.         keyPlace = PlaySoundLocal(placement, 1.0, 0.0, 0x0, 0);
  267.         Sleep(0.25);
  268.         PlaySoundThing(click, door0, 1, 3, 10, 0x0);
  269.         MoveToFrame(button0, 1, 1);
  270.         MoveToFrame(button1, 1, 1);
  271.         
  272.         
  273.         # switch to camera 2 with focus on ghost at indy's position
  274.         SetCameraFocus(2, but1Cam);
  275.         SetCameraSecondaryFocus(2, but1MoveTarg);
  276.         SetCurrentCamera(2);
  277.         SetCameraFOV(90, 0, 0.0);
  278.         
  279.         # Set door sector to draw and open door
  280.         SetSectorAdjoins(doorSector, 1);
  281.         Rotate(door0, 90, 1, doorspeed);
  282.         
  283.         # move camera focus object up to door
  284.         animId = MoveThingToPos(but1MoveTarg, GetThingPos(camTargPos1), 2.0);
  285.         # indy actor looks as door opens
  286.         AISetLookThing(indy, camTargPos1);
  287.         waitforstop(door0);
  288.         openpos=GetThingLVecPYR(door0);
  289.         Sleep(1.0);
  290.  
  291.         # move camera focus back to player 
  292.         #animId = MoveThingToPos(but1MoveTarg, GetThingPos(player), 0.5);
  293.         #Sleep(1.0);
  294.         
  295.         # Restore camera
  296.         SetCameraPosition(curCam, GetThingPos(but1Cam));
  297.         SetCurrentCamera(curCam);
  298.         RestoreExtCam();
  299.         EndCutScene();
  300.  
  301.         # Return control and camera to player
  302.         CopyOrientAndPos(indy, player);
  303.         SetThingFlags(indy, 0x80000);
  304.         ClearThingFlags(player, 0x80000);
  305.         ClearActorFlags(player, 0x200000);
  306.         sleep(sleeptime);
  307.         Rotate(door0, -90, 1, doorspeed);
  308.         closing = 1;
  309.         waitforstop(door0);
  310.         closing = 0;
  311.         MoveToFrame(button0, 0, 10);
  312.         MoveToFrame(button1, 0, 10);
  313.         PlaySoundThing(click, door0, 1, 3, 10, 0x0);
  314.         SetSectorAdjoins(doorSector, 0);
  315.         open = 0;
  316.     }
  317. return;
  318. # ........................................................................................
  319. # ........................................................................................
  320.  
  321. # ........................................................................................
  322.  
  323.  
  324. end
  325.  
  326.